# 构建阶段
FROM docker.io/library/golang:1.24.2-alpine AS builder

WORKDIR /app

# 清除代理，避免继承宿主机设置
ENV HTTP_PROXY=
ENV HTTPS_PROXY=
ENV http_proxy=
ENV https_proxy=

# 设置国内 Go 代理，避免连接失败
ENV GOPROXY=https://goproxy.cn,direct

# 复制依赖并下载
COPY backend/go.mod backend/go.sum ./
RUN go mod download

# 复制源码
COPY backend/ ./

# 创建运行时目录
RUN mkdir -p /app/data /app/configs /app/uploads

# 编译二进制（静态链接，适合 Alpine）
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o main main.go


# 最小运行时阶段
FROM docker.io/library/alpine:latest

# 安装基础工具和证书
RUN apk --no-cache add ca-certificates tzdata

# 设置时区（可选，避免时间警告）
ENV TZ=Asia/Shanghai

# 创建目录
RUN mkdir -p /app/data /app/configs /app/uploads

WORKDIR /app

# 从构建阶段复制二进制
COPY --from=builder /app/main ./


# 复制宿主机的 uploads/ 到镜像的 /app/uploads
COPY uploads/ /app/uploads

# 复制启动脚本并赋予执行权限
COPY scripts/endpoint.sh ./
RUN chmod +x ./endpoint.sh

# 暴露端口
EXPOSE 8080

# 启动脚本
CMD ["./endpoint.sh"]
